import os
from urllib.parse import urlparse, parse_qs

from app2.utils.pay_api.alipay_api import AliPay


def pay_url_detail(user, points):
    # 创建支付宝实例对象
    alipay = AliPay(
        appid="2016092900627049",  # 设置签约的appid
        app_notify_url="http://projectsedus.com/",  # 异步支付通知url
        app_private_key_path=os.getcwd() + r'\app2\utils\keys\app_private_key.pem',  # 设置应用私钥
        alipay_public_key_path=os.getcwd() + r'\app2\utils\keys\alipay_public_key.pem',
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        debug=True,  # 默认False,
        return_url="http://localhost:5000/user/user_info"  # 同步支付通知url,在这个页面可以展示给用户看，只有付款成功后才会跳转
    )
    import time
    # 获取当前时间
    time_now = int(time.time())
    # 转换成localtime
    time_local = time.localtime(time_now)
    # 转换成新的时间格式(2016-05-09 18:59:20)
    dt = time.strftime("%Y%m%d%H%M%S", time_local)
    # 调用支付包接口直接支付生成公网(沙盒环境支付地址)
    url = alipay.direct_pay(
        subject="【VIP充值订单】 【用户】：%s 【充值金额】: ￥%s" % (user, points),  # 订单名
        out_trade_no=dt,  # 订单号
        total_amount=int(points)  # 订单金额
    )
    re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format(data=url)
    # 沙箱环境下，用自己的账号是无法支付的，支付宝提供了沙箱账号、沙箱安卓App，进行测试支付
    # print(re_url)

    # 签名验证
    o = urlparse(re_url)
    query = parse_qs(o.query)
    processed_query = {}
    ali_sign = query.pop("sign")[0]
    for key, value in query.items():
        print(key, '----', value)
        processed_query[key] = value[0]

    print(alipay.verify(processed_query, ali_sign))
    return re_url